package com.lyy.consolidate;


/**
 * @Author:  GZQ
 * @date:  2024/11/27 22:33
 * @description: 巩固练习1
 */

public class HomeWork01 {
    public static void main(String[] args) {

        // 初始化Person对象数组, 有3个person对象
        Person[] persons = new Person[3];
        persons[0] = new Person("jack", 18, "C++开发工程师");
        persons[1] = new Person("tom", 20, "JavaEE工程师");
        persons[2] = new Person("smith", 17, "网络工程师");

        // 输出当前的对象数组
        System.out.println("排序前: ");
        for (int i = 0; i < persons.length; i++) {
            System.out.println(persons[i]); // 当直接输出一个对象时，toString 方法会被默认调用
        }

        // 使用冒泡排序法, 对Person对象数组进行排序
        Person temp = null; // 临时变量, 用于交换
        for (int i = 0; i < persons.length - 1; i++) { // 外层循环控制比较轮数
            for (int j = 0; j < persons.length - 1 - i; j++) { // 内层循环控制每轮比较次数

                // 并按照 age 从小到大排序, 如果前面的人的age < 后面的人的age, 则交换位置
                if (persons[j].getAge() > persons[j + 1].getAge()) {
                // 按照姓名的长度从大到小排序 if (persons[j].getName().length() > persons[j + 1].getName().length())
                    temp = persons[j];
                    persons[j] = persons[j + 1];
                    persons[j + 1] = temp;
                }
            }
        }


        System.out.println("排序后: ");
        for (int i = 0; i < persons.length; i++) {
            System.out.println(persons[i]);
        }

    }
}

/*
* 需求:
* 1. 定义一个Person类{name, age, job}, 初始化Person对象数组,
* 有3个person对象, 并按照age从小到大排序,使用冒泡排序法。
* */

class Person {
    private String name;
    private int age;
    private String job;

    public Person(String name, int age, String job) {
        this.name = name;
        this.age = age;
        this.job = job;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    // 重写toString方法,打印对象的信息
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", job='" + job + '\'' +
                '}';
    }
}
